﻿<?xml version="1.0" encoding="utf-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" targetNamespace="http://requester.mturk.amazonaws.com/doc/2008-08-02" xmlns:tns="http://requester.mturk.amazonaws.com/doc/2008-08-02" elementFormDefault="qualified">

  <!-- GENERAL-->

  <xs:complexType name="Claim">
    <xs:sequence>
      <xs:element name="Type" type="xs:string"/>
      <xs:element name="Body" type="xs:string"/>
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="Price">
    <xs:sequence>
      <xs:element name="Amount" type="xs:decimal"/>
      <xs:element name="CurrencyCode" type="xs:string"/>
      <xs:element name="FormattedPrice" type="xs:string" minOccurs="0"/>
    </xs:sequence>
  </xs:complexType>

  <xs:simpleType name="SortDirection">
    <xs:restriction base="xs:string">
      <xs:enumeration value="Ascending"/>
      <xs:enumeration value="Descending"/>
    </xs:restriction>
  </xs:simpleType>

  <xs:complexType name="QualificationRequirement">
    <xs:sequence>
      <xs:element name="QualificationTypeId" type="xs:string"/>
      <xs:element name="Comparator" type="tns:Comparator"/>
      <xs:element name="IntegerValue" type="xs:int" minOccurs="0"/>
      <xs:element name="LocaleValue" type="tns:Locale" minOccurs="0"/>
      <xs:element name="RequiredToPreview" type="xs:boolean" minOccurs="0"/>
    </xs:sequence>
  </xs:complexType>

  <xs:simpleType name="Comparator">
    <xs:restriction base="xs:string">
      <xs:enumeration value="LessThan"/>
      <xs:enumeration value="LessThanOrEqualTo"/>
      <xs:enumeration value="GreaterThan"/>
      <xs:enumeration value="GreaterThanOrEqualTo"/>
      <xs:enumeration value="EqualTo"/>
      <xs:enumeration value="NotEqualTo"/>
      <xs:enumeration value="Exists"/>
    </xs:restriction>
  </xs:simpleType>

  <xs:complexType name="Locale">
    <xs:sequence>
      <xs:element name="Country" type="xs:string" minOccurs="0"/>
    </xs:sequence>
  </xs:complexType>

  <!-- HIT -->

  <!-- Event Notification -->

  <xs:simpleType name="EventType">
    <xs:restriction base="xs:string">
      <xs:enumeration value="AssignmentAccepted"/>
      <xs:enumeration value="AssignmentAbandoned"/>
      <xs:enumeration value="AssignmentReturned"/>
      <xs:enumeration value="AssignmentSubmitted"/>
      <xs:enumeration value="AssignmentAutoApproved"/>
      <xs:enumeration value="HITReviewable"/>
      <xs:enumeration value="HITExpired"/>
    </xs:restriction>
  </xs:simpleType>

  <xs:simpleType name="NotificationTransport">
    <xs:restriction base="xs:string">
      <xs:enumeration value="SOAP"/>
      <xs:enumeration value="REST"/>
      <xs:enumeration value="Email"/>
    </xs:restriction>
  </xs:simpleType>

  <xs:complexType name="NotificationSpecification">
    <xs:sequence>
      <xs:element name="Destination" type="xs:string"/>
      <xs:element name="Transport" type="tns:NotificationTransport"/>
      <xs:element name="Version" type="xs:string"/>
      <xs:element name="EventType" type="tns:EventType" minOccurs="0" maxOccurs="unbounded"/>
    </xs:sequence>
  </xs:complexType>

  <!-- HIT helper structures -->

  <xs:simpleType name="HITStatus">
    <xs:restriction base="xs:string">
      <xs:enumeration value="Assignable"/>
      <xs:enumeration value="Unassignable"/>
      <xs:enumeration value="Reviewable"/>
      <xs:enumeration value="Reviewing"/>
      <xs:enumeration value="Disposed"/>
    </xs:restriction>
  </xs:simpleType>

  <xs:simpleType name="HITReviewStatus">
    <xs:restriction base="xs:string">
      <xs:enumeration value="NotReviewed"/>
      <xs:enumeration value="MarkedForReview"/>
      <xs:enumeration value="ReviewedAppropriate"/>
      <xs:enumeration value="ReviewedInappropriate"/>
    </xs:restriction>
  </xs:simpleType>

  <xs:complexType name="HIT">
    <xs:sequence>
      <xs:element ref="tns:Request" minOccurs="0"/>
      <xs:element name="HITId" type="xs:string" minOccurs="0"/>
      <xs:element name="HITTypeId" type="xs:string" minOccurs="0"/>
      <xs:element name="CreationTime" type="xs:dateTime" minOccurs="0"/>
      <xs:element name="Title" type="xs:string" minOccurs="0"/>
      <xs:element name="Description" type="xs:string" minOccurs="0"/>
      <xs:element name="Question" type="xs:string" minOccurs="0"/>
      <xs:element name="Keywords" type="xs:string" minOccurs="0"/>
      <xs:element name="HITStatus" type="tns:HITStatus" minOccurs="0"/>
      <xs:element name="MaxAssignments" type="xs:int" minOccurs="0"/>
      <xs:element name="Reward" type="tns:Price" minOccurs="0"/>
      <xs:element name="AutoApprovalDelayInSeconds" type="xs:long" minOccurs="0"/>
      <xs:element name="Expiration" type="xs:dateTime" minOccurs="0"/>
      <xs:element name="AssignmentDurationInSeconds" type="xs:long" minOccurs="0"/>
      <xs:element name="NumberOfSimilarHITs" type="xs:int" minOccurs="0"/>
      <xs:element name="RequesterAnnotation" type="xs:string" minOccurs="0"/>
      <xs:element name="QualificationRequirement" type="tns:QualificationRequirement" minOccurs="0" maxOccurs="unbounded"/>
      <xs:element name="HITReviewStatus" type="tns:HITReviewStatus" minOccurs="0"/>
      <xs:element name="NumberOfAssignmentsPending" type="xs:int" minOccurs="0"/>
      <xs:element name="NumberOfAssignmentsAvailable" type="xs:int" minOccurs="0"/>
      <xs:element name="NumberOfAssignmentsCompleted" type="xs:int" minOccurs="0"/>
    </xs:sequence>
  </xs:complexType>

  <!-- Create HIT -->

  <xs:element name="CreateHIT">
    <xs:complexType>
      <xs:sequence>
        <xs:element name="AWSAccessKeyId" type="xs:string"/>
        <xs:element name="Timestamp" type="xs:dateTime"/>
        <xs:element name="Signature" type="xs:string"/>
        <xs:element name="Validate" type="xs:string" minOccurs="0"/>
        <xs:element name="Credential" type="xs:string" minOccurs="0"/>
        <xs:element name="Request" type="tns:CreateHITRequest" maxOccurs="unbounded"/>
      </xs:sequence>
    </xs:complexType>
  </xs:element>

  <xs:complexType name="CreateHITRequest">
    <xs:sequence>
      <xs:element name="HITTypeId" type="xs:string" minOccurs="0"/>
      <xs:element name="MaxAssignments" type="xs:int" minOccurs="0"/>
      <xs:element name="AutoApprovalDelayInSeconds" type="xs:long" minOccurs="0"/>
      <xs:element name="LifetimeInSeconds" type="xs:long"/>
      <xs:element name="AssignmentDurationInSeconds" type="xs:long" minOccurs="0"/>
      <xs:element name="Reward" type="tns:Price" minOccurs="0"/>
      <xs:element name="Title" type="xs:string" minOccurs="0"/>
      <xs:element name="Keywords" type="xs:string" minOccurs="0"/>
      <xs:element name="Description" type="xs:string" minOccurs="0"/>
      <xs:element name="Question" type="xs:string"/>
      <xs:element name="RequesterAnnotation" type="xs:string" minOccurs="0"/>
      <xs:element name="QualificationRequirement" type="tns:QualificationRequirement" minOccurs="0" maxOccurs="unbounded"/>
      <xs:element name="ResponseGroup" type="xs:string" minOccurs="0" maxOccurs="unbounded"/>
    </xs:sequence>
  </xs:complexType>

  <xs:element name="CreateHITResponse">
    <xs:complexType>
      <xs:sequence>
        <xs:element ref="tns:OperationRequest" minOccurs="0"/>
        <xs:element name="HIT" type="tns:HIT" minOccurs="0" maxOccurs="unbounded"/>
      </xs:sequence>
    </xs:complexType>
  </xs:element>

  <!-- Register HITType -->

  <xs:element name="RegisterHITType">
    <xs:complexType>
      <xs:sequence>
        <xs:element name="AWSAccessKeyId" type="xs:string"/>
        <xs:element name="Timestamp" type="xs:dateTime"/>
        <xs:element name="Signature" type="xs:string"/>
        <xs:element name="Validate" type="xs:string" minOccurs="0"/>
        <xs:element name="Credential" type="xs:string" minOccurs="0"/>
        <xs:element name="Request" type="tns:RegisterHITTypeRequest" maxOccurs="unbounded"/>
      </xs:sequence>
    </xs:complexType>
  </xs:element>

  <xs:complexType name="RegisterHITTypeRequest">
    <xs:sequence>
      <xs:element name="AutoApprovalDelayInSeconds" type="xs:long" minOccurs="0"/>
      <xs:element name="AssignmentDurationInSeconds" type="xs:long"/>
      <xs:element name="Reward" type="tns:Price"/>
      <xs:element name="Title" type="xs:string"/>
      <xs:element name="Keywords" type="xs:string" minOccurs="0"/>
      <xs:element name="Description" type="xs:string"/>
      <xs:element name="QualificationRequirement" type="tns:QualificationRequirement" minOccurs="0" maxOccurs="unbounded"/>
      <xs:element name="ResponseGroup" type="xs:string" minOccurs="0" maxOccurs="unbounded"/>
    </xs:sequence>
  </xs:complexType>

  <xs:element name="RegisterHITTypeResponse">
    <xs:complexType>
      <xs:sequence>
        <xs:element ref="tns:OperationRequest" minOccurs="0"/>
        <xs:element name="RegisterHITTypeResult" type="tns:RegisterHITTypeResult" minOccurs="0" maxOccurs="unbounded"/>
      </xs:sequence>
    </xs:complexType>
  </xs:element>

  <xs:complexType name="RegisterHITTypeResult">
    <xs:sequence>
      <xs:element ref="tns:Request" minOccurs="0"/>
      <xs:element name="HITTypeId" type="xs:string" minOccurs="0"/>
    </xs:sequence>
  </xs:complexType>

  <!-- Update HITType -->

  <xs:element name="SetHITTypeNotification">
    <xs:complexType>
      <xs:sequence>
        <xs:element name="AWSAccessKeyId" type="xs:string"/>
        <xs:element name="Timestamp" type="xs:dateTime"/>
        <xs:element name="Signature" type="xs:string"/>
        <xs:element name="Validate" type="xs:string" minOccurs="0"/>
        <xs:element name="Credential" type="xs:string" minOccurs="0"/>
        <xs:element name="Request" type="tns:SetHITTypeNotificationRequest" maxOccurs="unbounded"/>
      </xs:sequence>
    </xs:complexType>
  </xs:element>

  <xs:complexType name="SetHITTypeNotificationRequest">
    <xs:sequence>
      <xs:element name="HITTypeId" type="xs:string"/>
      <xs:element name="Notification" type="tns:NotificationSpecification" minOccurs="0"/>
      <xs:element name="Active" type="xs:boolean" minOccurs="0"/>
    </xs:sequence>
  </xs:complexType>

  <xs:element name="SetHITTypeNotificationResponse">
    <xs:complexType>
      <xs:sequence>
        <xs:element ref="tns:OperationRequest" minOccurs="0"/>
        <xs:element name="SetHITTypeNotificationResult" type="tns:SetHITTypeNotificationResult" minOccurs="0" maxOccurs="unbounded"/>
      </xs:sequence>
    </xs:complexType>
  </xs:element>

  <xs:complexType name="SetHITTypeNotificationResult">
    <xs:sequence>
      <xs:element ref="tns:Request" minOccurs="0"/>
    </xs:sequence>
  </xs:complexType>

  <!-- Send Test Event Notification -->

  <xs:element name="SendTestEventNotification">
    <xs:complexType>
      <xs:sequence>
        <xs:element name="AWSAccessKeyId" type="xs:string"/>
        <xs:element name="Timestamp" type="xs:dateTime"/>
        <xs:element name="Signature" type="xs:string"/>
        <xs:element name="Validate" type="xs:string" minOccurs="0"/>
        <xs:element name="Credential" type="xs:string" minOccurs="0"/>
        <xs:element name="Request" type="tns:SendTestEventNotificationRequest" maxOccurs="unbounded"/>
      </xs:sequence>
    </xs:complexType>
  </xs:element>

  <xs:complexType name="SendTestEventNotificationRequest">
    <xs:sequence>
      <xs:element name="Notification" type="tns:NotificationSpecification"/>
      <xs:element name="TestEventType" type="tns:EventType" minOccurs="0"/>
    </xs:sequence>
  </xs:complexType>

  <xs:element name="SendTestEventNotificationResponse">
    <xs:complexType>
      <xs:sequence>
        <xs:element ref="tns:OperationRequest" minOccurs="0"/>
        <xs:element name="SendTestEventNotificationResult" type="tns:SendTestEventNotificationResult" minOccurs="0" maxOccurs="unbounded"/>
      </xs:sequence>
    </xs:complexType>
  </xs:element>

  <xs:complexType name="SendTestEventNotificationResult">
    <xs:sequence>
      <xs:element ref="tns:Request" minOccurs="0"/>
    </xs:sequence>
  </xs:complexType>

  <!-- Dispose reviewable HITs -->

  <xs:element name="DisposeHIT">
    <xs:complexType>
      <xs:sequence>
        <xs:element name="AWSAccessKeyId" type="xs:string"/>
        <xs:element name="Timestamp" type="xs:dateTime"/>
        <xs:element name="Signature" type="xs:string"/>
        <xs:element name="Validate" type="xs:string" minOccurs="0"/>
        <xs:element name="Credential" type="xs:string" minOccurs="0"/>
        <xs:element name="Request" type="tns:DisposeHITRequest" minOccurs="0" maxOccurs="unbounded"/>
      </xs:sequence>
    </xs:complexType>
  </xs:element>

  <xs:complexType name="DisposeHITRequest">
    <xs:sequence>
      <xs:element name="HITId" type="xs:string"/>
      <xs:element name="ResponseGroup" type="xs:string" minOccurs="0" maxOccurs="unbounded"/>
    </xs:sequence>
  </xs:complexType>

  <xs:element name="DisposeHITResponse">
    <xs:complexType>
      <xs:sequence>
        <xs:element ref="tns:OperationRequest" minOccurs="0"/>
        <xs:element name="DisposeHITResult" type="tns:DisposeHITResult" minOccurs="0" maxOccurs="unbounded"/>
      </xs:sequence>
    </xs:complexType>
  </xs:element>

  <xs:complexType name="DisposeHITResult">
    <xs:sequence>
      <xs:element ref="tns:Request" minOccurs="0"/>
    </xs:sequence>
  </xs:complexType>


  <!-- Disable HIT -->

  <xs:element name="DisableHIT">
    <xs:complexType>
      <xs:sequence>
        <xs:element name="AWSAccessKeyId" type="xs:string"/>
        <xs:element name="Timestamp" type="xs:dateTime"/>
        <xs:element name="Signature" type="xs:string"/>
        <xs:element name="Validate" type="xs:string" minOccurs="0"/>
        <xs:element name="Credential" type="xs:string" minOccurs="0"/>
        <xs:element name="Request" type="tns:DisableHITRequest" minOccurs="0" maxOccurs="unbounded"/>
      </xs:sequence>
    </xs:complexType>
  </xs:element>

  <xs:complexType name="DisableHITRequest">
    <xs:sequence>
      <xs:element name="HITId" type="xs:string"/>
      <xs:element name="ResponseGroup" type="xs:string" minOccurs="0" maxOccurs="unbounded"/>
    </xs:sequence>
  </xs:complexType>

  <xs:element name="DisableHITResponse">
    <xs:complexType>
      <xs:sequence>
        <xs:element ref="tns:OperationRequest" minOccurs="0"/>
        <xs:element name="DisableHITResult" type="tns:DisableHITResult" minOccurs="0" maxOccurs="unbounded"/>
      </xs:sequence>
    </xs:complexType>
  </xs:element>

  <xs:complexType name="DisableHITResult">
    <xs:sequence>
      <xs:element ref="tns:Request" minOccurs="0"/>
    </xs:sequence>
  </xs:complexType>

  <!-- Get HIT -->

  <xs:element name="GetHIT">
    <xs:complexType>
      <xs:sequence>
        <xs:element name="AWSAccessKeyId" type="xs:string"/>
        <xs:element name="Timestamp" type="xs:dateTime"/>
        <xs:element name="Signature" type="xs:string"/>
        <xs:element name="Validate" type="xs:string" minOccurs="0"/>
        <xs:element name="Credential" type="xs:string" minOccurs="0"/>
        <xs:element name="Request" type="tns:GetHITRequest" minOccurs="0" maxOccurs="unbounded"/>
      </xs:sequence>
    </xs:complexType>
  </xs:element>

  <xs:complexType name="GetHITRequest">
    <xs:sequence>
      <xs:element name="HITId" type="xs:string"/>
      <xs:element name="ResponseGroup" type="xs:string" minOccurs="0" maxOccurs="unbounded"/>
    </xs:sequence>
  </xs:complexType>

  <xs:element name="GetHITResponse">
    <xs:complexType>
      <xs:sequence>
        <xs:element ref="tns:OperationRequest" minOccurs="0"/>
        <xs:element name="HIT" type="tns:HIT" minOccurs="0" maxOccurs="unbounded"/>
      </xs:sequence>
    </xs:complexType>
  </xs:element>

  <!-- Get Reviewable HITs -->

  <xs:simpleType name="ReviewableHITStatus">
    <xs:restriction base="xs:string">
      <xs:enumeration value="Reviewable"/>
      <xs:enumeration value="Reviewing"/>
    </xs:restriction>
  </xs:simpleType>

  <xs:simpleType name="GetReviewableHITsSortProperty">
    <xs:restriction base="xs:string">
      <xs:enumeration value="Title"/>
      <xs:enumeration value="Reward"/>
      <xs:enumeration value="Expiration"/>
      <xs:enumeration value="CreationTime"/>
      <xs:enumeration value="Enumeration"/>
    </xs:restriction>
  </xs:simpleType>

  <xs:element name="GetReviewableHITs">
    <xs:complexType>
      <xs:sequence>
        <xs:element name="AWSAccessKeyId" type="xs:string"/>
        <xs:element name="Timestamp" type="xs:dateTime"/>
        <xs:element name="Signature" type="xs:string"/>
        <xs:element name="Validate" type="xs:string" minOccurs="0"/>
        <xs:element name="Credential" type="xs:string" minOccurs="0"/>
        <xs:element name="Request" type="tns:GetReviewableHITsRequest" minOccurs="0" maxOccurs="unbounded"/>
      </xs:sequence>
    </xs:complexType>
  </xs:element>

  <xs:complexType name="GetReviewableHITsRequest">
    <xs:sequence>
      <xs:element name="HITTypeId" type="xs:string" minOccurs="0"/>
      <xs:element name="Status" type="tns:ReviewableHITStatus" minOccurs="0"/>
      <xs:element name="SortDirection" type="tns:SortDirection" minOccurs="0"/>
      <xs:element name="SortProperty" type="tns:GetReviewableHITsSortProperty" minOccurs="0"/>
      <xs:element name="PageNumber" type="xs:int" minOccurs="0"/>
      <xs:element name="PageSize" type="xs:int" minOccurs="0"/>
      <xs:element name="ResponseGroup" type="xs:string" minOccurs="0" maxOccurs="unbounded"/>
    </xs:sequence>
  </xs:complexType>

  <xs:element name="GetReviewableHITsResponse">
    <xs:complexType>
      <xs:sequence>
        <xs:element ref="tns:OperationRequest" minOccurs="0"/>
        <xs:element name="GetReviewableHITsResult" type="tns:GetReviewableHITsResult" minOccurs="0" maxOccurs="unbounded"/>
      </xs:sequence>
    </xs:complexType>
  </xs:element>

  <xs:complexType name="GetReviewableHITsResult">
    <xs:sequence>
      <xs:element ref="tns:Request" minOccurs="0"/>
      <xs:element name="PageNumber" type="xs:int" minOccurs="0"/>
      <xs:element name="NumResults" type="xs:int" minOccurs="0"/>
      <xs:element name="TotalNumResults" type="xs:int" minOccurs="0"/>
      <xs:element name="HIT" type="tns:HIT" minOccurs="0" maxOccurs="unbounded"/>
    </xs:sequence>
  </xs:complexType>

  <!-- Get HITs For Qualification Type -->

  <xs:element name="GetHITsForQualificationType">
    <xs:complexType>
      <xs:sequence>
        <xs:element name="AWSAccessKeyId" type="xs:string"/>
        <xs:element name="Timestamp" type="xs:dateTime"/>
        <xs:element name="Signature" type="xs:string"/>
        <xs:element name="Validate" type="xs:string" minOccurs="0"/>
        <xs:element name="Credential" type="xs:string" minOccurs="0"/>
        <xs:element name="Request" type="tns:GetHITsForQualificationTypeRequest" minOccurs="0" maxOccurs="unbounded"/>
      </xs:sequence>
    </xs:complexType>
  </xs:element>

  <xs:complexType name="GetHITsForQualificationTypeRequest">
    <xs:sequence>
      <xs:element name="QualificationTypeId" type="xs:string"/>
      <xs:element name="PageNumber" type="xs:int" minOccurs="0"/>
      <xs:element name="PageSize" type="xs:int" minOccurs="0"/>
      <xs:element name="ResponseGroup" type="xs:string" minOccurs="0" maxOccurs="unbounded"/>
    </xs:sequence>
  </xs:complexType>

  <xs:element name="GetHITsForQualificationTypeResponse">
    <xs:complexType>
      <xs:sequence>
        <xs:element ref="tns:OperationRequest" minOccurs="0"/>
        <xs:element name="GetHITsForQualificationTypeResult" type="tns:GetHITsForQualificationTypeResult" minOccurs="0" maxOccurs="unbounded"/>
      </xs:sequence>
    </xs:complexType>
  </xs:element>

  <xs:complexType name="GetHITsForQualificationTypeResult">
    <xs:sequence>
      <xs:element ref="tns:Request" minOccurs="0"/>
      <xs:element name="PageNumber" type="xs:int" minOccurs="0"/>
      <xs:element name="NumResults" type="xs:int" minOccurs="0"/>
      <xs:element name="TotalNumResults" type="xs:int" minOccurs="0"/>
      <xs:element name="HIT" type="tns:HIT" minOccurs="0" maxOccurs="unbounded"/>
    </xs:sequence>
  </xs:complexType>

  <!-- Get Qualifications For Qualification Type -->

  <xs:element name="GetQualificationsForQualificationType">
    <xs:complexType>
      <xs:sequence>
        <xs:element name="AWSAccessKeyId" type="xs:string"/>
        <xs:element name="Timestamp" type="xs:dateTime"/>
        <xs:element name="Signature" type="xs:string"/>
        <xs:element name="Validate" type="xs:string" minOccurs="0"/>
        <xs:element name="Credential" type="xs:string" minOccurs="0"/>
        <xs:element name="Request" type="tns:GetQualificationsForQualificationTypeRequest" minOccurs="0" maxOccurs="unbounded"/>
      </xs:sequence>
    </xs:complexType>
  </xs:element>

  <xs:complexType name="GetQualificationsForQualificationTypeRequest">
    <xs:sequence>
      <xs:element name="QualificationTypeId" type="xs:string"/>
      <xs:element name="Status" type="tns:QualificationStatus" minOccurs="0"/>
      <xs:element name="PageNumber" type="xs:int" minOccurs="0"/>
      <xs:element name="PageSize" type="xs:int" minOccurs="0"/>
      <xs:element name="ResponseGroup" type="xs:string" minOccurs="0" maxOccurs="unbounded"/>
    </xs:sequence>
  </xs:complexType>

  <xs:element name="GetQualificationsForQualificationTypeResponse">
    <xs:complexType>
      <xs:sequence>
        <xs:element ref="tns:OperationRequest" minOccurs="0"/>
        <xs:element name="GetQualificationsForQualificationTypeResult" type="tns:GetQualificationsForQualificationTypeResult" minOccurs="0" maxOccurs="unbounded"/>
      </xs:sequence>
    </xs:complexType>
  </xs:element>

  <xs:complexType name="GetQualificationsForQualificationTypeResult">
    <xs:sequence>
      <xs:element ref="tns:Request" minOccurs="0"/>
      <xs:element name="PageNumber" type="xs:int" minOccurs="0"/>
      <xs:element name="NumResults" type="xs:int" minOccurs="0"/>
      <xs:element name="TotalNumResults" type="xs:int" minOccurs="0"/>
      <xs:element name="Qualification" type="tns:Qualification" minOccurs="0" maxOccurs="unbounded"/>
    </xs:sequence>
  </xs:complexType>

  <!-- SetHITAsReviewing -->

  <xs:element name="SetHITAsReviewing">
    <xs:complexType>
      <xs:sequence>
        <xs:element name="AWSAccessKeyId" type="xs:string"/>
        <xs:element name="Timestamp" type="xs:dateTime"/>
        <xs:element name="Signature" type="xs:string"/>
        <xs:element name="Validate" type="xs:string" minOccurs="0"/>
        <xs:element name="Credential" type="xs:string" minOccurs="0"/>
        <xs:element name="Request" type="tns:SetHITAsReviewingRequest" minOccurs="0" maxOccurs="unbounded"/>
      </xs:sequence>
    </xs:complexType>
  </xs:element>

  <xs:complexType name="SetHITAsReviewingRequest">
    <xs:sequence>
      <xs:element name="HITId" type="xs:string"/>
      <xs:element name="Revert" type="xs:boolean" minOccurs="0"/>
      <xs:element name="ResponseGroup" type="xs:string" minOccurs="0" maxOccurs="unbounded"/>
    </xs:sequence>
  </xs:complexType>

  <xs:element name="SetHITAsReviewingResponse">
    <xs:complexType>
      <xs:sequence>
        <xs:element ref="tns:OperationRequest" minOccurs="0"/>
        <xs:element name="SetHITAsReviewingResult" type="tns:SetHITAsReviewingResult" minOccurs="0" maxOccurs="unbounded"/>
      </xs:sequence>
    </xs:complexType>
  </xs:element>

  <xs:complexType name="SetHITAsReviewingResult">
    <xs:sequence>
      <xs:element ref="tns:Request" minOccurs="0"/>
    </xs:sequence>
  </xs:complexType>

  <!-- Extend HIT -->

  <xs:element name="ExtendHIT">
    <xs:complexType>
      <xs:sequence>
        <xs:element name="AWSAccessKeyId" type="xs:string"/>
        <xs:element name="Timestamp" type="xs:dateTime"/>
        <xs:element name="Signature" type="xs:string"/>
        <xs:element name="Validate" type="xs:string" minOccurs="0"/>
        <xs:element name="Credential" type="xs:string" minOccurs="0"/>
        <xs:element name="Request" type="tns:ExtendHITRequest" maxOccurs="unbounded"/>

      </xs:sequence>
    </xs:complexType>
  </xs:element>

  <xs:complexType name="ExtendHITRequest">
    <xs:sequence>
      <xs:element name="HITId" type="xs:string"/>
      <xs:element name="MaxAssignmentsIncrement" type="xs:int" minOccurs="0"/>
      <xs:element name="ExpirationIncrementInSeconds" type="xs:long" minOccurs="0"/>
      <xs:element name="ResponseGroup" type="xs:string" minOccurs="0" maxOccurs="unbounded"/>
    </xs:sequence>
  </xs:complexType>

  <xs:element name="ExtendHITResponse">
    <xs:complexType>
      <xs:sequence>
        <xs:element ref="tns:OperationRequest" minOccurs="0"/>
        <xs:element name="ExtendHITResult" type="tns:ExtendHITResult" minOccurs="0" maxOccurs="unbounded"/>
      </xs:sequence>
    </xs:complexType>
  </xs:element>

  <xs:complexType name="ExtendHITResult">
    <xs:sequence>
      <xs:element ref="tns:Request" minOccurs="0"/>
    </xs:sequence>
  </xs:complexType>

  <!-- Force expiration of a  HIT -->

  <xs:element name="ForceExpireHIT">
    <xs:complexType>
      <xs:sequence>
        <xs:element name="AWSAccessKeyId" type="xs:string"/>
        <xs:element name="Timestamp" type="xs:dateTime"/>
        <xs:element name="Signature" type="xs:string"/>
        <xs:element name="Validate" type="xs:string" minOccurs="0"/>
        <xs:element name="Credential" type="xs:string" minOccurs="0"/>
        <xs:element name="Request" type="tns:ForceExpireHITRequest" minOccurs="0" maxOccurs="unbounded"/>
      </xs:sequence>
    </xs:complexType>
  </xs:element>

  <xs:complexType name="ForceExpireHITRequest">
    <xs:sequence>
      <xs:element name="HITId" type="xs:string"/>
      <xs:element name="ResponseGroup" type="xs:string" minOccurs="0" maxOccurs="unbounded"/>
    </xs:sequence>
  </xs:complexType>

  <xs:element name="ForceExpireHITResponse">
    <xs:complexType>
      <xs:sequence>
        <xs:element ref="tns:OperationRequest" minOccurs="0"/>
        <xs:element name="ForceExpireHITResult" type="tns:ForceExpireHITResult" minOccurs="0" maxOccurs="unbounded"/>
      </xs:sequence>
    </xs:complexType>
  </xs:element>

  <xs:complexType name="ForceExpireHITResult">
    <xs:sequence>
      <xs:element ref="tns:Request" minOccurs="0"/>
    </xs:sequence>
  </xs:complexType>

  <!-- ASSIGNMENT -->

  <!-- Assignment helper structures -->

  <xs:simpleType name="AssignmentStatus">
    <xs:restriction base="xs:string">
      <xs:enumeration value="Submitted"/>
      <xs:enumeration value="Approved"/>
      <xs:enumeration value="Rejected"/>
    </xs:restriction>
  </xs:simpleType>

  <xs:complexType name="Assignment">
    <xs:sequence>
      <xs:element ref="tns:Request" minOccurs="0"/>
      <xs:element name="AssignmentId" type="xs:string" minOccurs="0"/>
      <xs:element name="WorkerId" type="xs:string" minOccurs="0"/>
      <xs:element name="HITId" type="xs:string" minOccurs="0"/>
      <xs:element name="AssignmentStatus" type="tns:AssignmentStatus" minOccurs="0"/>
      <xs:element name="AutoApprovalTime" type="xs:dateTime" minOccurs="0"/>
      <xs:element name="AcceptTime" type="xs:dateTime" minOccurs="0"/>
      <xs:element name="SubmitTime" type="xs:dateTime" minOccurs="0"/>
      <xs:element name="ApprovalTime" type="xs:dateTime" minOccurs="0"/>
      <xs:element name="RejectionTime" type="xs:dateTime" minOccurs="0"/>
      <xs:element name="Deadline" type="xs:dateTime" minOccurs="0"/>
      <xs:element name="Answer" type="xs:string" minOccurs="0"/>
      <xs:element name="RequesterFeedback" type="xs:string" minOccurs="0"/>
    </xs:sequence>
  </xs:complexType>


  <!-- Approve Assignment -->

  <xs:element name="ApproveAssignment">
    <xs:complexType>
      <xs:sequence>
        <xs:element name="AWSAccessKeyId" type="xs:string"/>
        <xs:element name="Timestamp" type="xs:dateTime"/>
        <xs:element name="Signature" type="xs:string"/>
        <xs:element name="Validate" type="xs:string" minOccurs="0"/>
        <xs:element name="Credential" type="xs:string" minOccurs="0"/>
        <xs:element name="Request" type="tns:ApproveAssignmentRequest" minOccurs="0" maxOccurs="unbounded"/>
      </xs:sequence>
    </xs:complexType>
  </xs:element>

  <xs:complexType name="ApproveAssignmentRequest">
    <xs:sequence>
      <xs:element name="AssignmentId" type="xs:string"/>
      <xs:element name="ResponseGroup" type="xs:string" minOccurs="0" maxOccurs="unbounded"/>
      <xs:element name="RequesterFeedback" type="xs:string" minOccurs="0"/>
    </xs:sequence>
  </xs:complexType>

  <xs:element name="ApproveAssignmentResponse">
    <xs:complexType>
      <xs:sequence>
        <xs:element ref="tns:OperationRequest" minOccurs="0"/>
        <xs:element name="ApproveAssignmentResult" type="tns:ApproveAssignmentResult" minOccurs="0" maxOccurs="unbounded"/>
      </xs:sequence>
    </xs:complexType>
  </xs:element>

  <xs:complexType name="ApproveAssignmentResult">
    <xs:sequence>
      <xs:element ref="tns:Request" minOccurs="0"/>
    </xs:sequence>
  </xs:complexType>

  <!-- Reject Assignment -->

  <xs:element name="RejectAssignment">
    <xs:complexType>
      <xs:sequence>
        <xs:element name="AWSAccessKeyId" type="xs:string"/>
        <xs:element name="Timestamp" type="xs:dateTime"/>
        <xs:element name="Signature" type="xs:string"/>
        <xs:element name="Validate" type="xs:string" minOccurs="0"/>
        <xs:element name="Credential" type="xs:string" minOccurs="0"/>
        <xs:element name="Request" type="tns:RejectAssignmentRequest" minOccurs="0" maxOccurs="unbounded"/>
      </xs:sequence>
    </xs:complexType>
  </xs:element>

  <xs:complexType name="RejectAssignmentRequest">
    <xs:sequence>
      <xs:element name="AssignmentId" type="xs:string"/>
      <xs:element name="ResponseGroup" type="xs:string" minOccurs="0" maxOccurs="unbounded"/>
      <xs:element name="RequesterFeedback" type="xs:string" minOccurs="0"/>
    </xs:sequence>
  </xs:complexType>

  <xs:element name="RejectAssignmentResponse">
    <xs:complexType>
      <xs:sequence>
        <xs:element ref="tns:OperationRequest" minOccurs="0"/>
        <xs:element name="RejectAssignmentResult" type="tns:RejectAssignmentResult" minOccurs="0" maxOccurs="unbounded"/>
      </xs:sequence>
    </xs:complexType>
  </xs:element>

  <xs:complexType name="RejectAssignmentResult">
    <xs:sequence>
      <xs:element ref="tns:Request" minOccurs="0"/>
    </xs:sequence>
  </xs:complexType>

  <!-- Get Assignments for HIT -->

  <xs:simpleType name="GetAssignmentsForHITSortProperty">
    <xs:restriction base="xs:string">
      <xs:enumeration value="AcceptTime"/>
      <xs:enumeration value="SubmitTime"/>
      <xs:enumeration value="Answer"/>
      <xs:enumeration value="AssignmentStatus"/>
    </xs:restriction>
  </xs:simpleType>

  <xs:element name="GetAssignmentsForHIT">
    <xs:complexType>
      <xs:sequence>
        <xs:element name="AWSAccessKeyId" type="xs:string"/>
        <xs:element name="Timestamp" type="xs:dateTime"/>
        <xs:element name="Signature" type="xs:string"/>
        <xs:element name="Validate" type="xs:string" minOccurs="0"/>
        <xs:element name="Credential" type="xs:string" minOccurs="0"/>
        <xs:element name="Request" type="tns:GetAssignmentsForHITRequest" minOccurs="0" maxOccurs="unbounded"/>
      </xs:sequence>
    </xs:complexType>
  </xs:element>

  <xs:complexType name="GetAssignmentsForHITRequest">
    <xs:sequence>
      <xs:element name="HITId" type="xs:string"/>
      <xs:element name="SortDirection" type="tns:SortDirection" minOccurs="0"/>
      <xs:element name="SortProperty" type="tns:GetAssignmentsForHITSortProperty" minOccurs="0"/>
      <xs:element name="PageNumber" type="xs:int" minOccurs="0"/>
      <xs:element name="PageSize" type="xs:int" minOccurs="0"/>
      <xs:element name="AssignmentStatus" type="tns:AssignmentStatus" minOccurs="0" maxOccurs="unbounded"/>
      <xs:element name="ResponseGroup" type="xs:string" minOccurs="0" maxOccurs="unbounded"/>
    </xs:sequence>
  </xs:complexType>

  <xs:element name="GetAssignmentsForHITResponse">
    <xs:complexType>
      <xs:sequence>
        <xs:element ref="tns:OperationRequest" minOccurs="0"/>
        <xs:element name="GetAssignmentsForHITResult" type="tns:GetAssignmentsForHITResult" minOccurs="0" maxOccurs="unbounded"/>
      </xs:sequence>
    </xs:complexType>
  </xs:element>

  <xs:complexType name="GetAssignmentsForHITResult">
    <xs:sequence>
      <xs:element ref="tns:Request" minOccurs="0"/>
      <xs:element name="PageNumber" type="xs:int" minOccurs="0"/>
      <xs:element name="NumResults" type="xs:int" minOccurs="0"/>
      <xs:element name="TotalNumResults" type="xs:int" minOccurs="0"/>
      <xs:element name="Assignment" type="tns:Assignment" minOccurs="0" maxOccurs="unbounded"/>
    </xs:sequence>
  </xs:complexType>

  <!-- Get short-lived URLs for Uploaded files For a single Assignment answer -->
  <!-- Specified by the Assignment ID and the question identifier -->
  <xs:element name="GetFileUploadURL">
    <xs:complexType>
      <xs:sequence>
        <xs:element name="AWSAccessKeyId" type="xs:string"/>
        <xs:element name="Timestamp" type="xs:dateTime"/>
        <xs:element name="Signature" type="xs:string"/>
        <xs:element name="Validate" type="xs:string" minOccurs="0"/>
        <xs:element name="Credential" type="xs:string" minOccurs="0"/>
        <xs:element name="Request" type="tns:GetFileUploadURLRequest" minOccurs="0" maxOccurs="unbounded"/>
      </xs:sequence>
    </xs:complexType>
  </xs:element>

  <xs:complexType name="GetFileUploadURLRequest">
    <xs:sequence>
      <xs:element name="AssignmentId" type="xs:string"/>
      <xs:element name="QuestionIdentifier" type="xs:string"/>
    </xs:sequence>
  </xs:complexType>

  <xs:element name="GetFileUploadURLResponse">
    <xs:complexType>
      <xs:sequence>
        <xs:element ref="tns:OperationRequest" minOccurs="0"/>
        <xs:element name="GetFileUploadURLResult" type="tns:GetFileUploadURLResult" minOccurs="0" maxOccurs="unbounded"/>
      </xs:sequence>
    </xs:complexType>
  </xs:element>

  <xs:complexType name="GetFileUploadURLResult">
    <xs:sequence>
      <xs:element ref="tns:Request" minOccurs="0"/>
      <xs:element name="FileUploadURL" type="xs:string"/>
    </xs:sequence>
  </xs:complexType>

  <!-- Search for HITs -->

  <xs:simpleType name="SearchHITsSortProperty">
    <xs:restriction base="xs:string">
      <xs:enumeration value="Title"/>
      <xs:enumeration value="Reward"/>
      <xs:enumeration value="Expiration"/>
      <xs:enumeration value="CreationTime"/>
      <xs:enumeration value="Enumeration"/>
    </xs:restriction>
  </xs:simpleType>

  <xs:element name="SearchHITs">
    <xs:complexType>
      <xs:sequence>
        <xs:element name="AWSAccessKeyId" type="xs:string"/>
        <xs:element name="Timestamp" type="xs:dateTime"/>
        <xs:element name="Signature" type="xs:string"/>
        <xs:element name="Validate" type="xs:string" minOccurs="0"/>
        <xs:element name="Credential" type="xs:string" minOccurs="0"/>
        <xs:element name="Request" type="tns:SearchHITsRequest" minOccurs="0" maxOccurs="unbounded"/>
      </xs:sequence>
    </xs:complexType>
  </xs:element>

  <xs:complexType name="SearchHITsRequest">
    <xs:sequence>
      <xs:element name="SortDirection" type="tns:SortDirection" minOccurs="0"/>
      <xs:element name="SortProperty" type="tns:SearchHITsSortProperty" minOccurs="0"/>
      <xs:element name="PageNumber" type="xs:int" minOccurs="0"/>
      <xs:element name="PageSize" type="xs:int" minOccurs="0"/>
      <xs:element name="ResponseGroup" type="xs:string" minOccurs="0" maxOccurs="unbounded"/>
    </xs:sequence>
  </xs:complexType>

  <xs:element name="SearchHITsResponse">
    <xs:complexType>
      <xs:sequence>
        <xs:element ref="tns:OperationRequest" minOccurs="0"/>
        <xs:element name="SearchHITsResult" type="tns:SearchHITsResult" minOccurs="0" maxOccurs="unbounded"/>
      </xs:sequence>
    </xs:complexType>
  </xs:element>

  <xs:complexType name="SearchHITsResult">
    <xs:sequence>
      <xs:element ref="tns:Request" minOccurs="0"/>
      <xs:element name="PageNumber" type="xs:int" minOccurs="0"/>
      <xs:element name="NumResults" type="xs:int" minOccurs="0"/>
      <xs:element name="TotalNumResults" type="xs:int" minOccurs="0"/>
      <xs:element name="HIT" type="tns:HIT" minOccurs="0" maxOccurs="unbounded"/>
    </xs:sequence>
  </xs:complexType>

  <!-- Grant Bonus -->

  <xs:element name="GrantBonus">
    <xs:complexType>
      <xs:sequence>
        <xs:element name="AWSAccessKeyId" type="xs:string"/>
        <xs:element name="Timestamp" type="xs:dateTime"/>
        <xs:element name="Signature" type="xs:string"/>
        <xs:element name="Validate" type="xs:string" minOccurs="0"/>
        <xs:element name="Credential" type="xs:string" minOccurs="0"/>
        <xs:element name="Request" type="tns:GrantBonusRequest" maxOccurs="unbounded"/>
      </xs:sequence>
    </xs:complexType>
  </xs:element>

  <xs:complexType name="GrantBonusRequest">
    <xs:sequence>
      <xs:element name="WorkerId" type="xs:string"/>
      <xs:element name="BonusAmount" type="tns:Price"/>
      <xs:element name="AssignmentId" type="xs:string"/>
      <xs:element name="Reason" type="xs:string"/>
      <xs:element name="ResponseGroup" type="xs:string" minOccurs="0" maxOccurs="unbounded"/>
    </xs:sequence>
  </xs:complexType>

  <xs:element name="GrantBonusResponse">
    <xs:complexType>
      <xs:sequence>
        <xs:element ref="tns:OperationRequest" minOccurs="0"/>
        <xs:element name="GrantBonusResult" type="tns:GrantBonusResult" minOccurs="0" maxOccurs="unbounded"/>
      </xs:sequence>
    </xs:complexType>
  </xs:element>

  <xs:complexType name="GrantBonusResult">
    <xs:sequence>
      <xs:element ref="tns:Request" minOccurs="0"/>
    </xs:sequence>
  </xs:complexType>

  <!-- Get Bonus Payments-->

  <xs:complexType name="BonusPayment">
    <xs:sequence>
      <xs:element ref="tns:Request" minOccurs="0"/>
      <xs:element name="WorkerId" type="xs:string" minOccurs="0"/>
      <xs:element name="BonusAmount" type="tns:Price" minOccurs="0"/>
      <xs:element name="AssignmentId" type="xs:string" minOccurs="0"/>
      <xs:element name="Reason" type="xs:string" minOccurs="0"/>
      <xs:element name="GrantTime" type="xs:dateTime" minOccurs="0"/>
    </xs:sequence>
  </xs:complexType>

  <xs:element name="GetBonusPayments">
    <xs:complexType>
      <xs:sequence>
        <xs:element name="AWSAccessKeyId" type="xs:string"/>
        <xs:element name="Timestamp" type="xs:dateTime"/>
        <xs:element name="Signature" type="xs:string"/>
        <xs:element name="Validate" type="xs:string" minOccurs="0"/>
        <xs:element name="Credential" type="xs:string" minOccurs="0"/>
        <xs:element name="Request" type="tns:GetBonusPaymentsRequest" maxOccurs="unbounded"/>
      </xs:sequence>
    </xs:complexType>
  </xs:element>

  <xs:complexType name="GetBonusPaymentsRequest">
    <xs:sequence>
      <xs:element name="HITId" type="xs:string" minOccurs="0"/>
      <xs:element name="AssignmentId" type="xs:string" minOccurs="0"/>
      <xs:element name="PageNumber" type="xs:int" minOccurs="0"/>
      <xs:element name="PageSize" type="xs:int" minOccurs="0"/>
      <xs:element name="ResponseGroup" type="xs:string" minOccurs="0" maxOccurs="unbounded"/>
    </xs:sequence>
  </xs:complexType>

  <xs:element name="GetBonusPaymentsResponse">
    <xs:complexType>
      <xs:sequence>
        <xs:element ref="tns:OperationRequest" minOccurs="0"/>
        <xs:element name="GetBonusPaymentsResult" type="tns:GetBonusPaymentsResult" minOccurs="0" maxOccurs="unbounded"/>
      </xs:sequence>
    </xs:complexType>
  </xs:element>

  <xs:complexType name="GetBonusPaymentsResult">
    <xs:sequence>
      <xs:element ref="tns:Request" minOccurs="0"/>
      <xs:element name="NumResults" type="xs:int" minOccurs="0"/>
      <xs:element name="PageNumber" type="xs:int" minOccurs="0"/>
      <xs:element name="TotalNumResults" type="xs:int" minOccurs="0"/>
      <xs:element name="BonusPayment" type="tns:BonusPayment" minOccurs="0" maxOccurs="unbounded"/>
    </xs:sequence>
  </xs:complexType>

  <!-- Change HITType Of HIT -->

  <xs:element name="ChangeHITTypeOfHIT">
    <xs:complexType>
      <xs:sequence>
        <xs:element name="AWSAccessKeyId" type="xs:string"/>
        <xs:element name="Timestamp" type="xs:dateTime"/>
        <xs:element name="Signature" type="xs:string"/>
        <xs:element name="Validate" type="xs:string" minOccurs="0"/>
        <xs:element name="Credential" type="xs:string" minOccurs="0"/>
        <xs:element name="Request" type="tns:ChangeHITTypeOfHITRequest" maxOccurs="unbounded"/>
      </xs:sequence>
    </xs:complexType>
  </xs:element>

  <xs:complexType name="ChangeHITTypeOfHITRequest">
    <xs:sequence>
      <xs:element name="HITId" type="xs:string"/>
      <xs:element name="HITTypeId" type="xs:string"/>
      <xs:element name="ResponseGroup" type="xs:string" minOccurs="0" maxOccurs="unbounded"/>
    </xs:sequence>
  </xs:complexType>

  <xs:element name="ChangeHITTypeOfHITResponse">
    <xs:complexType>
      <xs:sequence>
        <xs:element ref="tns:OperationRequest" minOccurs="0"/>
        <xs:element name="ChangeHITTypeOfHITResult" type="tns:ChangeHITTypeOfHITResult" minOccurs="0" maxOccurs="unbounded"/>
      </xs:sequence>
    </xs:complexType>
  </xs:element>

  <xs:complexType name="ChangeHITTypeOfHITResult">
    <xs:sequence>
      <xs:element ref="tns:Request" minOccurs="0"/>
    </xs:sequence>
  </xs:complexType>

  <!-- QUALIFICATION TYPE -->

  <xs:complexType name="QualificationType">
    <xs:sequence>
      <xs:element ref="tns:Request" minOccurs="0"/>
      <xs:element name="QualificationTypeId" type="xs:string" minOccurs="0"/>
      <xs:element name="CreationTime" type="xs:dateTime" minOccurs="0"/>
      <xs:element name="Name" type="xs:string" minOccurs="0"/>
      <xs:element name="Description" type="xs:string" minOccurs="0"/>
      <xs:element name="Keywords" type="xs:string" minOccurs="0"/>
      <xs:element name="QualificationTypeStatus" type="tns:QualificationTypeStatus" minOccurs="0"/>
      <xs:element name="Test" type="xs:string" minOccurs="0"/>
      <xs:element name="TestDurationInSeconds" type="xs:long" minOccurs="0"/>
      <xs:element name="AnswerKey" type="xs:string" minOccurs="0"/>
      <xs:element name="RetryDelayInSeconds" type="xs:long" minOccurs="0"/>
      <xs:element name="IsRequestable" type="xs:boolean" minOccurs="0"/>
      <xs:element name="AutoGranted" type="xs:boolean" minOccurs="0"/>
      <xs:element name="AutoGrantedValue" type="xs:int" minOccurs="0"/>
    </xs:sequence>
  </xs:complexType>

  <xs:simpleType name="QualificationTypeStatus">
    <xs:restriction base="xs:string">
      <xs:enumeration value="Active"/>
      <xs:enumeration value="Inactive"/>
    </xs:restriction>
  </xs:simpleType>

  <xs:complexType name="QualificationRequest">
    <xs:sequence>
      <xs:element name="QualificationRequestId" type="xs:string"/>
      <xs:element name="QualificationTypeId" type="xs:string"/>
      <xs:element name="SubjectId" type="xs:string"/>
      <xs:element name="Test" type="xs:string" minOccurs="0"/>
      <xs:element name="Answer" type="xs:string" minOccurs="0"/>
      <xs:element name="SubmitTime" type="xs:dateTime"/>
    </xs:sequence>
  </xs:complexType>

  <!-- Create QualificationType -->

  <xs:element name="CreateQualificationType">
    <xs:complexType>
      <xs:sequence>
        <xs:element name="AWSAccessKeyId" type="xs:string"/>
        <xs:element name="Timestamp" type="xs:dateTime"/>
        <xs:element name="Signature" type="xs:string"/>
        <xs:element name="Validate" type="xs:string" minOccurs="0"/>
        <xs:element name="Credential" type="xs:string" minOccurs="0"/>
        <xs:element name="Request" type="tns:CreateQualificationTypeRequest" minOccurs="0" maxOccurs="unbounded"/>
      </xs:sequence>
    </xs:complexType>
  </xs:element>

  <xs:complexType name="CreateQualificationTypeRequest">
    <xs:sequence>
      <xs:element name="Name" type="xs:string"/>
      <xs:element name="Keywords" type="xs:string" minOccurs="0"/>
      <xs:element name="Description" type="xs:string" minOccurs="0"/>
      <xs:element name="QualificationTypeStatus" type="tns:QualificationTypeStatus" minOccurs="0"/>
      <xs:element name="RetryDelayInSeconds" type="xs:long" minOccurs="0"/>
      <xs:element name="Test" type="xs:string" minOccurs="0"/>
      <xs:element name="AnswerKey" type="xs:string" minOccurs="0"/>
      <xs:element name="TestDurationInSeconds" type="xs:long" minOccurs="0"/>
      <xs:element name="AutoGranted" type="xs:boolean" minOccurs="0"/>
      <xs:element name="AutoGrantedValue" type="xs:int" minOccurs="0"/>
      <xs:element name="ResponseGroup" type="xs:string" minOccurs="0" maxOccurs="unbounded"/>
    </xs:sequence>
  </xs:complexType>

  <xs:element name="CreateQualificationTypeResponse">
    <xs:complexType>
      <xs:sequence>
        <xs:element ref="tns:OperationRequest" minOccurs="0"/>
        <xs:element name="QualificationType" type="tns:QualificationType" minOccurs="0" maxOccurs="unbounded"/>
      </xs:sequence>
    </xs:complexType>
  </xs:element>


  <!-- Dispose Qualification -->

  <xs:element name="DisposeQualificationType">
    <xs:complexType>
      <xs:sequence>
        <xs:element name="AWSAccessKeyId" type="xs:string"/>
        <xs:element name="Timestamp" type="xs:dateTime"/>
        <xs:element name="Signature" type="xs:string"/>
        <xs:element name="Validate" type="xs:string" minOccurs="0"/>
        <xs:element name="Credential" type="xs:string" minOccurs="0"/>
        <xs:element name="Request" type="tns:DisposeQualificationTypeRequest" minOccurs="0" maxOccurs="unbounded"/>
      </xs:sequence>
    </xs:complexType>
  </xs:element>

  <xs:complexType name="DisposeQualificationTypeRequest">
    <xs:sequence>
      <xs:element name="QualificationTypeId" type="xs:string" minOccurs="0"/>
    </xs:sequence>
  </xs:complexType>

  <xs:element name="DisposeQualificationTypeResponse">
    <xs:complexType>
      <xs:sequence>
        <xs:element ref="tns:OperationRequest" minOccurs="0"/>
        <xs:element name="DisposeQualificationTypeResult" type="tns:DisposeQualificationTypeResult" minOccurs="0" maxOccurs="unbounded"/>
      </xs:sequence>
    </xs:complexType>
  </xs:element>

  <xs:complexType name="DisposeQualificationTypeResult">
    <xs:sequence>
      <xs:element ref="tns:Request" minOccurs="0"/>
    </xs:sequence>
  </xs:complexType>

  <!-- Get Qualification Requests -->

  <xs:simpleType name="GetQualificationRequestsSortProperty">
    <xs:restriction base="xs:string">
      <xs:enumeration value="QualificationTypeId"/>
      <xs:enumeration value="SubmitTime"/>
    </xs:restriction>
  </xs:simpleType>

  <xs:element name="GetQualificationRequests">
    <xs:complexType>
      <xs:sequence>
        <xs:element name="AWSAccessKeyId" type="xs:string"/>
        <xs:element name="Timestamp" type="xs:dateTime"/>
        <xs:element name="Signature" type="xs:string"/>
        <xs:element name="Validate" type="xs:string" minOccurs="0"/>
        <xs:element name="Credential" type="xs:string" minOccurs="0"/>
        <xs:element name="Request" type="tns:GetQualificationRequestsRequest" minOccurs="0" maxOccurs="unbounded"/>
      </xs:sequence>
    </xs:complexType>
  </xs:element>

  <xs:complexType name="GetQualificationRequestsRequest">
    <xs:sequence>
      <xs:element name="QualificationTypeId" type="xs:string" minOccurs="0"/>
      <xs:element name="SortDirection" type="tns:SortDirection" minOccurs="0"/>
      <xs:element name="SortProperty" type="tns:GetQualificationRequestsSortProperty" minOccurs="0"/>
      <xs:element name="PageNumber" type="xs:int" minOccurs="0"/>
      <xs:element name="PageSize" type="xs:int" minOccurs="0"/>
      <xs:element name="ResponseGroup" type="xs:string" minOccurs="0" maxOccurs="unbounded"/>
    </xs:sequence>
  </xs:complexType>

  <xs:element name="GetQualificationRequestsResponse">
    <xs:complexType>
      <xs:sequence>
        <xs:element ref="tns:OperationRequest" minOccurs="0"/>
        <xs:element name="GetQualificationRequestsResult" type="tns:GetQualificationRequestsResult" minOccurs="0" maxOccurs="unbounded"/>
      </xs:sequence>
    </xs:complexType>
  </xs:element>

  <xs:complexType name="GetQualificationRequestsResult">
    <xs:sequence>
      <xs:element ref="tns:Request" minOccurs="0"/>
      <xs:element name="NumResults" type="xs:int" minOccurs="0"/>
      <xs:element name="TotalNumResults" type="xs:int" minOccurs="0"/>
      <xs:element name="PageNumber" type="xs:int" minOccurs="0"/>
      <xs:element name="QualificationRequest" type="tns:QualificationRequest" minOccurs="0" maxOccurs="unbounded"/>
    </xs:sequence>
  </xs:complexType>

  <!-- Reject Qualification Request -->

  <xs:element name="RejectQualificationRequest">
    <xs:complexType>
      <xs:sequence>
        <xs:element name="AWSAccessKeyId" type="xs:string"/>
        <xs:element name="Timestamp" type="xs:dateTime"/>
        <xs:element name="Signature" type="xs:string"/>
        <xs:element name="Validate" type="xs:string" minOccurs="0"/>
        <xs:element name="Credential" type="xs:string" minOccurs="0"/>
        <xs:element name="Request" type="tns:RejectQualificationRequestRequest" minOccurs="0" maxOccurs="unbounded"/>
      </xs:sequence>
    </xs:complexType>
  </xs:element>

  <xs:complexType name="RejectQualificationRequestRequest">
    <xs:sequence>
      <xs:element name="QualificationRequestId" type="xs:string"/>
      <xs:element name="Reason" type="xs:string" minOccurs="0"/>
      <xs:element name="ResponseGroup" type="xs:string" minOccurs="0" maxOccurs="unbounded"/>
    </xs:sequence>
  </xs:complexType>

  <xs:element name="RejectQualificationRequestResponse">
    <xs:complexType>
      <xs:sequence>
        <xs:element ref="tns:OperationRequest" minOccurs="0"/>
        <xs:element name="RejectQualificationRequestResult" type="tns:RejectQualificationRequestResult" minOccurs="0" maxOccurs="unbounded"/>
      </xs:sequence>
    </xs:complexType>
  </xs:element>

  <xs:complexType name="RejectQualificationRequestResult">
    <xs:sequence>
      <xs:element ref="tns:Request" minOccurs="0"/>
    </xs:sequence>
  </xs:complexType>

  <!-- Grant Qualification -->

  <xs:element name="GrantQualification">
    <xs:complexType>
      <xs:sequence>
        <xs:element name="AWSAccessKeyId" type="xs:string"/>
        <xs:element name="Timestamp" type="xs:dateTime"/>
        <xs:element name="Signature" type="xs:string"/>
        <xs:element name="Validate" type="xs:string" minOccurs="0"/>
        <xs:element name="Credential" type="xs:string" minOccurs="0"/>
        <xs:element name="Request" type="tns:GrantQualificationRequest" minOccurs="0" maxOccurs="unbounded"/>
      </xs:sequence>
    </xs:complexType>
  </xs:element>

  <xs:complexType name="GrantQualificationRequest">
    <xs:sequence>
      <xs:element name="QualificationRequestId" type="xs:string"/>
      <xs:element name="IntegerValue" type="xs:int" minOccurs="0"/>
      <xs:element name="ResponseGroup" type="xs:string" minOccurs="0" maxOccurs="unbounded"/>
    </xs:sequence>
  </xs:complexType>

  <xs:element name="GrantQualificationResponse">
    <xs:complexType>
      <xs:sequence>
        <xs:element ref="tns:OperationRequest" minOccurs="0"/>
        <xs:element name="GrantQualificationResult" type="tns:GrantQualificationResult" minOccurs="0" maxOccurs="unbounded"/>
      </xs:sequence>
    </xs:complexType>
  </xs:element>


  <xs:complexType name="GrantQualificationResult">
    <xs:sequence>
      <xs:element ref="tns:Request" minOccurs="0"/>
    </xs:sequence>
  </xs:complexType>

  <!-- Assign Qualification -->

  <xs:element name="AssignQualification">
    <xs:complexType>
      <xs:sequence>
        <xs:element name="AWSAccessKeyId" type="xs:string"/>
        <xs:element name="Timestamp" type="xs:dateTime"/>
        <xs:element name="Signature" type="xs:string"/>
        <xs:element name="Validate" type="xs:string" minOccurs="0"/>
        <xs:element name="Credential" type="xs:string" minOccurs="0"/>
        <xs:element name="Request" type="tns:AssignQualificationRequest" minOccurs="0" maxOccurs="unbounded"/>
      </xs:sequence>
    </xs:complexType>
  </xs:element>

  <xs:complexType name="AssignQualificationRequest">
    <xs:sequence>
      <xs:element name="QualificationTypeId" type="xs:string"/>
      <xs:element name="WorkerId" type="xs:string"/>
      <xs:element name="IntegerValue" type="xs:int" minOccurs="0"/>
      <xs:element name="SendNotification" type="xs:boolean" minOccurs="0"/>
      <xs:element name="ResponseGroup" type="xs:string" minOccurs="0" maxOccurs="unbounded"/>
    </xs:sequence>
  </xs:complexType>

  <xs:element name="AssignQualificationResponse">
    <xs:complexType>
      <xs:sequence>
        <xs:element ref="tns:OperationRequest" minOccurs="0"/>
        <xs:element name="AssignQualificationResult" type="tns:AssignQualificationResult" minOccurs="0" maxOccurs="unbounded"/>
      </xs:sequence>
    </xs:complexType>
  </xs:element>


  <xs:complexType name="AssignQualificationResult">
    <xs:sequence>
      <xs:element ref="tns:Request" minOccurs="0"/>
    </xs:sequence>
  </xs:complexType>


  <!-- Revoke Qualification -->

  <xs:element name="RevokeQualification">
    <xs:complexType>
      <xs:sequence>
        <xs:element name="AWSAccessKeyId" type="xs:string"/>
        <xs:element name="Timestamp" type="xs:dateTime"/>
        <xs:element name="Signature" type="xs:string"/>
        <xs:element name="Validate" type="xs:string" minOccurs="0"/>
        <xs:element name="Credential" type="xs:string" minOccurs="0"/>
        <xs:element name="Request" type="tns:RevokeQualificationRequest" minOccurs="0" maxOccurs="unbounded"/>
      </xs:sequence>
    </xs:complexType>
  </xs:element>

  <xs:complexType name="RevokeQualificationRequest">
    <xs:sequence>
      <xs:element name="SubjectId" type="xs:string"/>
      <xs:element name="QualificationTypeId" type="xs:string"/>
      <xs:element name="Reason" type="xs:string" minOccurs="0"/>
      <xs:element name="ResponseGroup" type="xs:string" minOccurs="0" maxOccurs="unbounded"/>
    </xs:sequence>
  </xs:complexType>

  <xs:element name="RevokeQualificationResponse">
    <xs:complexType>
      <xs:sequence>
        <xs:element ref="tns:OperationRequest" minOccurs="0"/>
        <xs:element name="RevokeQualificationResult" type="tns:RevokeQualificationResult" minOccurs="0" maxOccurs="unbounded"/>
      </xs:sequence>
    </xs:complexType>
  </xs:element>

  <xs:complexType name="RevokeQualificationResult">
    <xs:sequence>
      <xs:element ref="tns:Request" minOccurs="0"/>
    </xs:sequence>
  </xs:complexType>

  <!-- Update Qualification -->

  <xs:element name="UpdateQualificationScore">
    <xs:complexType>
      <xs:sequence>
        <xs:element name="AWSAccessKeyId" type="xs:string"/>
        <xs:element name="Timestamp" type="xs:dateTime"/>
        <xs:element name="Signature" type="xs:string"/>
        <xs:element name="Validate" type="xs:string" minOccurs="0"/>
        <xs:element name="Credential" type="xs:string" minOccurs="0"/>
        <xs:element name="Request" type="tns:UpdateQualificationScoreRequest" minOccurs="0" maxOccurs="unbounded"/>
      </xs:sequence>
    </xs:complexType>
  </xs:element>

  <xs:complexType name="UpdateQualificationScoreRequest">
    <xs:sequence>
      <xs:element name="QualificationTypeId" type="xs:string"/>
      <xs:element name="SubjectId" type="xs:string"/>
      <xs:element name="IntegerValue" type="xs:int" minOccurs="0"/>
      <xs:element name="ResponseGroup" type="xs:string" minOccurs="0" maxOccurs="unbounded"/>
    </xs:sequence>
  </xs:complexType>

  <xs:element name="UpdateQualificationScoreResponse">
    <xs:complexType>
      <xs:sequence>
        <xs:element ref="tns:OperationRequest" minOccurs="0"/>
        <xs:element name="UpdateQualificationScoreResult" type="tns:UpdateQualificationScoreResult" minOccurs="0" maxOccurs="unbounded"/>
      </xs:sequence>
    </xs:complexType>
  </xs:element>

  <xs:complexType name="UpdateQualificationScoreResult">
    <xs:sequence>
      <xs:element ref="tns:Request" minOccurs="0"/>
    </xs:sequence>
  </xs:complexType>

  <!-- Get QualificationType -->

  <xs:element name="GetQualificationType">
    <xs:complexType>
      <xs:sequence>
        <xs:element name="AWSAccessKeyId" type="xs:string"/>
        <xs:element name="Timestamp" type="xs:dateTime"/>
        <xs:element name="Signature" type="xs:string"/>
        <xs:element name="Validate" type="xs:string" minOccurs="0"/>
        <xs:element name="Credential" type="xs:string" minOccurs="0"/>
        <xs:element name="Request" type="tns:GetQualificationTypeRequest" minOccurs="0" maxOccurs="unbounded"/>
      </xs:sequence>
    </xs:complexType>
  </xs:element>

  <xs:complexType name="GetQualificationTypeRequest">
    <xs:sequence>
      <xs:element name="QualificationTypeId" type="xs:string"/>
      <xs:element name="ResponseGroup" type="xs:string" minOccurs="0" maxOccurs="unbounded"/>
    </xs:sequence>
  </xs:complexType>

  <xs:element name="GetQualificationTypeResponse">
    <xs:complexType>
      <xs:sequence>
        <xs:element ref="tns:OperationRequest" minOccurs="0"/>
        <xs:element name="QualificationType" type="tns:QualificationType" minOccurs="0" maxOccurs="unbounded"/>
      </xs:sequence>
    </xs:complexType>
  </xs:element>

  <!-- Get Qualification -->
  <xs:element name="GetQualificationScore">
    <xs:complexType>
      <xs:sequence>
        <xs:element name="AWSAccessKeyId" type="xs:string"/>
        <xs:element name="Timestamp" type="xs:dateTime"/>
        <xs:element name="Signature" type="xs:string"/>
        <xs:element name="Validate" type="xs:string" minOccurs="0"/>
        <xs:element name="Credential" type="xs:string" minOccurs="0"/>
        <xs:element name="Request" type="tns:GetQualificationScoreRequest" minOccurs="0" maxOccurs="unbounded"/>
      </xs:sequence>
    </xs:complexType>
  </xs:element>

  <xs:complexType name="GetQualificationScoreRequest">
    <xs:sequence>
      <xs:element name="QualificationTypeId" type="xs:string"/>
      <xs:element name="SubjectId" type="xs:string"/>
      <xs:element name="ResponseGroup" type="xs:string" minOccurs="0" maxOccurs="unbounded"/>
    </xs:sequence>
  </xs:complexType>

  <xs:element name="GetQualificationScoreResponse">
    <xs:complexType>
      <xs:sequence>
        <xs:element ref="tns:OperationRequest" minOccurs="0"/>
        <xs:element name="Qualification" type="tns:Qualification" minOccurs="0" maxOccurs="unbounded"/>
      </xs:sequence>
    </xs:complexType>
  </xs:element>

  <xs:complexType name="Qualification">
    <xs:sequence>
      <xs:element ref="tns:Request" minOccurs="0"/>
      <xs:element name="QualificationTypeId" type="xs:string" minOccurs="0"/>
      <xs:element name="SubjectId" type="xs:string" minOccurs="0"/>
      <xs:element name="GrantTime" type="xs:dateTime" minOccurs="0"/>
      <xs:element name="IntegerValue" type="xs:int" minOccurs="0"/>
      <xs:element name="LocaleValue" type="tns:Locale" minOccurs="0"/>
      <xs:element name="Status" type="tns:QualificationStatus" minOccurs="0"/>
    </xs:sequence>
  </xs:complexType>

  <xs:simpleType name="QualificationStatus">
    <xs:restriction base="xs:string">
      <xs:enumeration value="Granted"/>
      <xs:enumeration value="Revoked"/>
    </xs:restriction>
  </xs:simpleType>

  <!-- Search QualificationTypes -->

  <xs:simpleType name="SearchQualificationTypesSortProperty">
    <xs:restriction base="xs:string">
      <xs:enumeration value="Name"/>
    </xs:restriction>
  </xs:simpleType>

  <xs:element name="SearchQualificationTypes">
    <xs:complexType>
      <xs:sequence>
        <xs:element name="AWSAccessKeyId" type="xs:string"/>
        <xs:element name="Timestamp" type="xs:dateTime"/>
        <xs:element name="Signature" type="xs:string"/>
        <xs:element name="Validate" type="xs:string" minOccurs="0"/>
        <xs:element name="Credential" type="xs:string" minOccurs="0"/>
        <xs:element name="Request" type="tns:SearchQualificationTypesRequest" minOccurs="0" maxOccurs="unbounded"/>
      </xs:sequence>
    </xs:complexType>
  </xs:element>

  <xs:complexType name="SearchQualificationTypesRequest">
    <xs:sequence>
      <xs:element name="Query" type="xs:string" minOccurs="0"/>
      <xs:element name="MustBeRequestable" type="xs:boolean"/>
      <xs:element name="MustBeOwnedByCaller" type="xs:boolean" minOccurs="0"/>
      <xs:element name="SortDirection" type="tns:SortDirection" minOccurs="0"/>
      <xs:element name="SortProperty" type="tns:SearchQualificationTypesSortProperty" minOccurs="0"/>
      <xs:element name="PageNumber" type="xs:int" minOccurs="0"/>
      <xs:element name="PageSize" type="xs:int" minOccurs="0"/>
      <xs:element name="ResponseGroup" type="xs:string" minOccurs="0" maxOccurs="unbounded"/>
    </xs:sequence>
  </xs:complexType>


  <xs:element name="SearchQualificationTypesResponse">
    <xs:complexType>
      <xs:sequence>
        <xs:element ref="tns:OperationRequest" minOccurs="0"/>
        <xs:element name="SearchQualificationTypesResult" type="tns:SearchQualificationTypesResult" minOccurs="0" maxOccurs="unbounded"/>
      </xs:sequence>
    </xs:complexType>
  </xs:element>

  <xs:complexType name="SearchQualificationTypesResult">
    <xs:sequence>
      <xs:element ref="tns:Request" minOccurs="0"/>
      <xs:element name="NumResults" type="xs:int" minOccurs="0"/>
      <xs:element name="TotalNumResults" type="xs:int" minOccurs="0"/>
      <xs:element name="PageNumber" type="xs:int" minOccurs="0"/>
      <xs:element name="QualificationType" type="tns:QualificationType" minOccurs="0" maxOccurs="unbounded"/>
    </xs:sequence>
  </xs:complexType>

  <!-- Update QualificationType -->

  <xs:element name="UpdateQualificationType">
    <xs:complexType>
      <xs:sequence>
        <xs:element name="AWSAccessKeyId" type="xs:string"/>
        <xs:element name="Timestamp" type="xs:dateTime"/>
        <xs:element name="Signature" type="xs:string"/>
        <xs:element name="Validate" type="xs:string" minOccurs="0"/>
        <xs:element name="Credential" type="xs:string" minOccurs="0"/>
        <xs:element name="Request" type="tns:UpdateQualificationTypeRequest" minOccurs="0" maxOccurs="unbounded"/>
      </xs:sequence>
    </xs:complexType>
  </xs:element>

  <xs:complexType name="UpdateQualificationTypeRequest">
    <xs:sequence>
      <xs:element name="QualificationTypeId" type="xs:string"/>
      <xs:element name="Description" type="xs:string" minOccurs="0"/>
      <xs:element name="QualificationTypeStatus" type="tns:QualificationTypeStatus" minOccurs="0"/>
      <xs:element name="Test" type="xs:string" minOccurs="0"/>
      <xs:element name="AnswerKey" type="xs:string" minOccurs="0"/>
      <xs:element name="TestDurationInSeconds" type="xs:long" minOccurs="0"/>
      <xs:element name="RetryDelayInSeconds" type="xs:long" minOccurs="0"/>
      <xs:element name="AutoGranted" type="xs:boolean" minOccurs="0"/>
      <xs:element name="AutoGrantedValue" type="xs:int" minOccurs="0"/>
      <xs:element name="ResponseGroup" type="xs:string" minOccurs="0" maxOccurs="unbounded"/>
    </xs:sequence>
  </xs:complexType>

  <xs:element name="UpdateQualificationTypeResponse">
    <xs:complexType>
      <xs:sequence>
        <xs:element ref="tns:OperationRequest" minOccurs="0"/>
        <xs:element name="QualificationType" type="tns:QualificationType" minOccurs="0" maxOccurs="unbounded"/>
      </xs:sequence>
    </xs:complexType>
  </xs:element>

  <!-- Account Balance -->

  <xs:element name="GetAccountBalance">
    <xs:complexType>
      <xs:sequence>
        <xs:element name="AWSAccessKeyId" type="xs:string"/>
        <xs:element name="Timestamp" type="xs:dateTime"/>
        <xs:element name="Signature" type="xs:string"/>
        <xs:element name="Validate" type="xs:string" minOccurs="0"/>
        <xs:element name="Credential" type="xs:string" minOccurs="0"/>
        <xs:element name="Request" type="tns:GetAccountBalanceRequest" maxOccurs="unbounded"/>
      </xs:sequence>
    </xs:complexType>
  </xs:element>

  <xs:complexType name="GetAccountBalanceRequest">
    <xs:sequence>
      <xs:element name="ResponseGroup" type="xs:string" minOccurs="0" maxOccurs="unbounded"/>
      <xs:element name="Unused" type="xs:string" minOccurs="0"/>
    </xs:sequence>
  </xs:complexType>

  <xs:element name="GetAccountBalanceResponse">
    <xs:complexType>
      <xs:sequence>
        <xs:element ref="tns:OperationRequest" minOccurs="0"/>
        <xs:element name="GetAccountBalanceResult" type="tns:GetAccountBalanceResult" minOccurs="0" maxOccurs="unbounded"/>
      </xs:sequence>
    </xs:complexType>
  </xs:element>

  <xs:complexType name="GetAccountBalanceResult">
    <xs:sequence>
      <xs:element ref="tns:Request" minOccurs="0"/>
      <xs:element name="AvailableBalance" type="tns:Price" minOccurs="0"/>
      <xs:element name="OnHoldBalance" type="tns:Price" minOccurs="0"/>
    </xs:sequence>
  </xs:complexType>

  <!-- GetRequesterStatistic -->

  <xs:element name="GetRequesterStatistic">
    <xs:complexType>
      <xs:sequence>
        <xs:element name="AWSAccessKeyId" type="xs:string"/>
        <xs:element name="Timestamp" type="xs:dateTime"/>
        <xs:element name="Signature" type="xs:string"/>
        <xs:element name="Validate" type="xs:string" minOccurs="0"/>
        <xs:element name="Credential" type="xs:string" minOccurs="0"/>
        <xs:element name="Request" type="tns:GetRequesterStatisticRequest" minOccurs="0" maxOccurs="unbounded"/>
      </xs:sequence>
    </xs:complexType>
  </xs:element>

  <xs:complexType name="GetRequesterStatisticRequest">
    <xs:sequence>
      <xs:element name="Statistic" type="tns:RequesterStatistic"/>
      <xs:element name="TimePeriod" type="tns:TimePeriod" minOccurs="0"/>
      <xs:element name="Count" type="xs:int" minOccurs="0"/>
      <xs:element name="ResponseGroup" type="xs:string" minOccurs="0" maxOccurs="unbounded"/>
    </xs:sequence>
  </xs:complexType>

  <xs:element name="GetRequesterStatisticResponse">
    <xs:complexType>
      <xs:sequence>
        <xs:element ref="tns:OperationRequest" minOccurs="0"/>
        <xs:element name="GetStatisticResult" type="tns:GetStatisticResult" minOccurs="0" maxOccurs="unbounded"/>
      </xs:sequence>
    </xs:complexType>
  </xs:element>

  <xs:simpleType name="RequesterStatistic">
    <xs:restriction base="xs:string">
      <xs:enumeration value="NumberHITsAssignable"/>
      <xs:enumeration value="NumberHITsReviewable"/>
      <xs:enumeration value="NumberHITsCreated"/>
      <xs:enumeration value="NumberHITsCompleted"/>
      <xs:enumeration value="TotalRewardPayout"/>
      <xs:enumeration value="TotalRewardFeePayout"/>
      <xs:enumeration value="TotalFeePayout"/>
      <xs:enumeration value="TotalRewardAndFeePayout"/>
      <xs:enumeration value="TotalBonusPayout"/>
      <xs:enumeration value="TotalBonusFeePayout"/>
      <xs:enumeration value="EstimatedFeeLiability"/>
      <xs:enumeration value="EstimatedRewardLiability"/>
      <xs:enumeration value="EstimatedTotalLiability"/>
      <xs:enumeration value="NumberAssignmentsAvailable"/>
      <xs:enumeration value="NumberAssignmentsAccepted"/>
      <xs:enumeration value="NumberAssignmentsPending"/>
      <xs:enumeration value="NumberAssignmentsApproved"/>
      <xs:enumeration value="NumberAssignmentsRejected"/>
      <xs:enumeration value="NumberAssignmentsReturned"/>
      <xs:enumeration value="NumberAssignmentsAbandoned"/>
      <xs:enumeration value="AverageRewardAmount"/>
      <xs:enumeration value="PercentAssignmentsApproved"/>
      <xs:enumeration value="PercentAssignmentsRejected"/>
    </xs:restriction>
  </xs:simpleType>

  <!-- Notify Workers -->

  <xs:simpleType name="NotifyWorkersFailureCode">
    <xs:restriction base="xs:string">
      <xs:enumeration value="SoftFailure"/>
      <xs:enumeration value="HardFailure"/>
    </xs:restriction>
  </xs:simpleType>

  <xs:complexType name="NotifyWorkersFailureStatus">
    <xs:sequence>
      <xs:element name="NotifyWorkersFailureCode" type="tns:NotifyWorkersFailureCode"/>
      <xs:element name="NotifyWorkersFailureMessage" type="xs:string"/>
      <xs:element name="WorkerId" type="xs:string"/>
    </xs:sequence>
  </xs:complexType>

  <xs:element name="NotifyWorkers">
    <xs:complexType>
      <xs:sequence>
        <xs:element name="AWSAccessKeyId" type="xs:string"/>
        <xs:element name="Timestamp" type="xs:dateTime"/>
        <xs:element name="Signature" type="xs:string"/>
        <xs:element name="Validate" type="xs:string" minOccurs="0"/>
        <xs:element name="Credential" type="xs:string" minOccurs="0"/>
        <xs:element name="Request" type="tns:NotifyWorkersRequest" maxOccurs="unbounded"/>
      </xs:sequence>
    </xs:complexType>
  </xs:element>

  <xs:complexType name="NotifyWorkersRequest">
    <xs:sequence>
      <xs:element name="Subject" type="xs:string" minOccurs="0"/>
      <xs:element name="MessageText" type="xs:string"/>
      <xs:element name="WorkerId" type="xs:string" maxOccurs="100"/>
      <xs:element name="ResponseGroup" type="xs:string" minOccurs="0" maxOccurs="unbounded"/>
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="NotifyWorkersResult">
    <xs:sequence>
      <xs:element ref="tns:Request" minOccurs="0"/>
      <xs:element name="NotifyWorkersFailureStatus" type="tns:NotifyWorkersFailureStatus" minOccurs="0" maxOccurs="100"/>
      <!-- <xs:element ref="tns:NotifyWorkersFailureStatus" minOccurs="0" maxOccurs="100" /> -->
    </xs:sequence>
  </xs:complexType>

  <xs:element name="NotifyWorkersResponse">
    <xs:complexType>
      <xs:sequence>
        <xs:element ref="tns:OperationRequest" minOccurs="0"/>
        <xs:element name="NotifyWorkersResult" type="tns:NotifyWorkersResult" minOccurs="0" maxOccurs="unbounded"/>
      </xs:sequence>
    </xs:complexType>
  </xs:element>

  <!-- Statistic helper structures -->

  <xs:complexType name="GetStatisticResult">
    <xs:sequence>
      <xs:element ref="tns:Request" minOccurs="0"/>
      <xs:element name="DataPoint" type="tns:DataPoint" minOccurs="0" maxOccurs="unbounded"/>
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="DataPoint">
    <xs:sequence>
      <xs:element name="Date" type="xs:dateTime"/>
      <xs:element name="LongValue" type="xs:long" minOccurs="0"/>
      <xs:element name="DoubleValue" type="xs:double" minOccurs="0"/>
    </xs:sequence>
  </xs:complexType>

  <xs:simpleType name="TimePeriod">
    <xs:restriction base="xs:string">
      <xs:enumeration value="OneDay"/>
      <xs:enumeration value="SevenDays"/>
      <xs:enumeration value="ThirtyDays"/>
      <xs:enumeration value="LifeToDate"/>
    </xs:restriction>
  </xs:simpleType>

  <!--  Block Worker structures -->

  <xs:element name="BlockWorker">
    <xs:complexType>
      <xs:sequence>
        <xs:element name="AWSAccessKeyId" type="xs:string"/>
        <xs:element name="Timestamp" type="xs:dateTime"/>
        <xs:element name="Signature" type="xs:string"/>
        <xs:element name="Validate" type="xs:string" minOccurs="0"/>
        <xs:element name="Credential" type="xs:string" minOccurs="0"/>
        <xs:element name="Request" type="tns:BlockWorkerRequest" maxOccurs="unbounded"/>
      </xs:sequence>
    </xs:complexType>
  </xs:element>

  <xs:complexType name="BlockWorkerRequest">
    <xs:sequence>
      <xs:element name="WorkerId" type="xs:string"/>
      <xs:element name="Reason" type="xs:string"/>
      <xs:element name="ResponseGroup" type="xs:string" minOccurs="0" maxOccurs="unbounded"/>
    </xs:sequence>
  </xs:complexType>

  <xs:element name="BlockWorkerResponse">
    <xs:complexType>
      <xs:sequence>
        <xs:element ref="tns:OperationRequest" minOccurs="0"/>
        <xs:element name="BlockWorkerResult" type="tns:BlockWorkerResult" minOccurs="0" maxOccurs="unbounded"/>
      </xs:sequence>
    </xs:complexType>
  </xs:element>

  <xs:complexType name="BlockWorkerResult">
    <xs:sequence>
      <xs:element ref="tns:Request" minOccurs="0"/>
    </xs:sequence>
  </xs:complexType>

  <xs:element name="UnblockWorker">
    <xs:complexType>
      <xs:sequence>
        <xs:element name="AWSAccessKeyId" type="xs:string"/>
        <xs:element name="Timestamp" type="xs:dateTime"/>
        <xs:element name="Signature" type="xs:string"/>
        <xs:element name="Validate" type="xs:string" minOccurs="0"/>
        <xs:element name="Credential" type="xs:string" minOccurs="0"/>
        <xs:element name="Request" type="tns:UnblockWorkerRequest" maxOccurs="unbounded"/>
      </xs:sequence>
    </xs:complexType>
  </xs:element>

  <xs:complexType name="UnblockWorkerRequest">
    <xs:sequence>
      <xs:element name="WorkerId" type="xs:string"/>
      <xs:element name="Reason" type="xs:string" minOccurs="0"/>
      <xs:element name="ResponseGroup" type="xs:string" minOccurs="0" maxOccurs="unbounded"/>
    </xs:sequence>
  </xs:complexType>

  <xs:element name="UnblockWorkerResponse">
    <xs:complexType>
      <xs:sequence>
        <xs:element ref="tns:OperationRequest" minOccurs="0"/>
        <xs:element name="UnblockWorkerResult" type="tns:UnblockWorkerResult" minOccurs="0" maxOccurs="unbounded"/>
      </xs:sequence>
    </xs:complexType>
  </xs:element>

  <xs:complexType name="UnblockWorkerResult">
    <xs:sequence>
      <xs:element ref="tns:Request" minOccurs="0"/>
    </xs:sequence>
  </xs:complexType>

  <!--  Help and related structures -->

  <xs:element name="OperationRequest">
    <xs:complexType>
      <xs:sequence>
        <xs:element ref="tns:HTTPHeaders" minOccurs="0"/>
        <xs:element name="RequestId" type="xs:string" minOccurs="0"/>
        <xs:element ref="tns:Arguments" minOccurs="0"/>
        <xs:element ref="tns:Errors" minOccurs="0"/>
      </xs:sequence>
    </xs:complexType>
  </xs:element>

  <xs:element name="Request">
    <xs:complexType>
      <xs:sequence>
        <xs:element name="IsValid" type="xs:string" minOccurs="0"/>
        <xs:element name="CreateHITRequest" type="tns:CreateHITRequest" minOccurs="0"/>
        <xs:element name="RegisterHITTypeRequest" type="tns:RegisterHITTypeRequest" minOccurs="0"/>
        <xs:element name="DisposeHITRequest" type="tns:DisposeHITRequest" minOccurs="0"/>
        <xs:element name="DisableHITRequest" type="tns:DisableHITRequest" minOccurs="0"/>
        <xs:element name="GetHITRequest" type="tns:GetHITRequest" minOccurs="0"/>
        <xs:element name="GetReviewableHITsRequest" type="tns:GetReviewableHITsRequest" minOccurs="0"/>
        <xs:element name="GetHITsForQualificationTypeRequest" type="tns:GetHITsForQualificationTypeRequest" minOccurs="0"/>
        <xs:element name="GetQualificationsForQualificationTypeRequest" type="tns:GetQualificationsForQualificationTypeRequest" minOccurs="0"/>
        <xs:element name="SetHITAsReviewingRequest" type="tns:SetHITAsReviewingRequest" minOccurs="0"/>
        <xs:element name="SearchHITsRequest" type="tns:SearchHITsRequest" minOccurs="0"/>
        <xs:element name="ExtendHITRequest" type="tns:ExtendHITRequest" minOccurs="0"/>
        <xs:element name="ForceExpireHITRequest" type="tns:ForceExpireHITRequest" minOccurs="0"/>
        <xs:element name="ChangeHITTypeOfHITRequest" type="tns:ChangeHITTypeOfHITRequest" minOccurs="0"/>
        <xs:element name="CreateQualificationTypeRequest" type="tns:CreateQualificationTypeRequest" minOccurs="0"/>
        <xs:element name="DisposeQualificationTypeRequest" type="tns:DisposeQualificationTypeRequest" minOccurs="0"/>
        <xs:element name="GrantQualificationRequest" type="tns:GrantQualificationRequest" minOccurs="0"/>
        <xs:element name="AssignQualificationRequest" type="tns:AssignQualificationRequest" minOccurs="0"/>
        <xs:element name="RevokeQualificationRequest" type="tns:RevokeQualificationRequest" minOccurs="0"/>
        <xs:element name="GetQualificationRequestsRequest" type="tns:GetQualificationRequestsRequest" minOccurs="0"/>
        <xs:element name="RejectQualificationRequestRequest" type="tns:RejectQualificationRequestRequest" minOccurs="0"/>
        <xs:element name="GetQualificationTypeRequest" type="tns:GetQualificationTypeRequest" minOccurs="0"/>
        <xs:element name="SearchQualificationTypesRequest" type="tns:SearchQualificationTypesRequest" minOccurs="0"/>
        <xs:element name="UpdateQualificationTypeRequest" type="tns:UpdateQualificationTypeRequest" minOccurs="0"/>
        <xs:element name="ApproveAssignmentRequest" type="tns:ApproveAssignmentRequest" minOccurs="0"/>
        <xs:element name="RejectAssignmentRequest" type="tns:RejectAssignmentRequest" minOccurs="0"/>
        <xs:element name="GetAssignmentsForHIT" type="tns:GetAssignmentsForHITRequest" minOccurs="0"/>
        <xs:element name="GetFileUploadURL" type="tns:GetFileUploadURLRequest" minOccurs="0"/>
        <xs:element name="GrantBonusRequest" type="tns:GrantBonusRequest" minOccurs="0"/>
        <xs:element name="GetBonusPaymentsRequest" type="tns:GetBonusPaymentsRequest" minOccurs="0"/>
        <xs:element name="GetAccountBalanceRequest" type="tns:GetAccountBalanceRequest" minOccurs="0"/>
        <xs:element name="NotifyWorkersRequest" type="tns:NotifyWorkersRequest" minOccurs="0"/>
        <xs:element name="BlockWorkerRequest" type="tns:BlockWorkerRequest" minOccurs="0"/>
        <xs:element name="UnblockWorkerRequest" type="tns:UnblockWorkerRequest" minOccurs="0"/>
        <xs:element name="HelpRequest" type="tns:HelpRequest" minOccurs="0"/>
        <xs:element ref="tns:Errors" minOccurs="0"/>
      </xs:sequence>
    </xs:complexType>
  </xs:element>


  <!-- Standard AWS Platform types -->

  <xs:element name="HTTPHeaders">
    <xs:complexType>
      <xs:sequence>
        <xs:element name="Header" minOccurs="0" maxOccurs="unbounded">
          <xs:complexType>
            <xs:attribute name="Name" type="xs:string" use="required"/>
            <xs:attribute name="Value" type="xs:string" use="required"/>
          </xs:complexType>
        </xs:element>
      </xs:sequence>
    </xs:complexType>
  </xs:element>

  <xs:element name="Arguments">
    <xs:complexType>
      <xs:sequence>
        <xs:element name="Argument" maxOccurs="unbounded">
          <xs:complexType>
            <xs:attribute name="Name" type="xs:string" use="required"/>
            <xs:attribute name="Value" type="xs:string" use="required"/>
          </xs:complexType>
        </xs:element>
      </xs:sequence>
    </xs:complexType>
  </xs:element>

  <xs:complexType name="KeyValuePair">
    <xs:sequence>
      <xs:element name="Key" type="xs:string"/>
      <xs:element name="Value" type="xs:string"/>
    </xs:sequence>
  </xs:complexType>

  <xs:element name="Errors">
    <xs:complexType>
      <xs:sequence>
        <xs:element name="Error" maxOccurs="unbounded">
          <xs:complexType>
            <xs:sequence>
              <xs:element name="Code" type="xs:string"/>
              <xs:element name="Message" type="xs:string"/>
              <xs:element name="Data" type="tns:KeyValuePair" minOccurs="0" maxOccurs="unbounded"/>
            </xs:sequence>
          </xs:complexType>
        </xs:element>
      </xs:sequence>
    </xs:complexType>
  </xs:element>

  <xs:element name="Help">
    <xs:complexType>
      <xs:sequence>
        <xs:element name="AWSAccessKeyId" type="xs:string" minOccurs="0"/>
        <xs:element name="Timestamp" type="xs:dateTime" minOccurs="0"/>
        <xs:element name="Signature" type="xs:string" minOccurs="0"/>
        <xs:element name="Validate" type="xs:string" minOccurs="0"/>
        <xs:element name="Request" type="tns:HelpRequest" minOccurs="0" maxOccurs="unbounded"/>
      </xs:sequence>
    </xs:complexType>
  </xs:element>

  <xs:complexType name="HelpRequest">
    <xs:sequence>
      <xs:element name="About" type="xs:string" maxOccurs="unbounded"/>
      <xs:element name="HelpType" minOccurs="0">
        <xs:simpleType>
          <xs:restriction base="xs:string">
            <xs:enumeration value="Operation"/>
            <xs:enumeration value="ResponseGroup"/>
          </xs:restriction>
        </xs:simpleType>
      </xs:element>
      <xs:element name="ResponseGroup" type="xs:string" minOccurs="0" maxOccurs="unbounded"/>
    </xs:sequence>
  </xs:complexType>

  <xs:element name="HelpResponse">
    <xs:complexType>
      <xs:sequence>
        <xs:element ref="tns:OperationRequest" minOccurs="0"/>
        <xs:element ref="tns:Information" minOccurs="0" maxOccurs="unbounded"/>
      </xs:sequence>
    </xs:complexType>
  </xs:element>

  <xs:element name="Information">
    <xs:complexType>
      <xs:sequence>
        <xs:element ref="tns:Request" minOccurs="0"/>
        <xs:element ref="tns:OperationInformation" minOccurs="0" maxOccurs="unbounded"/>
        <xs:element ref="tns:ResponseGroupInformation" minOccurs="0" maxOccurs="unbounded"/>
      </xs:sequence>
    </xs:complexType>
  </xs:element>

  <xs:element name="OperationInformation">
    <xs:complexType>
      <xs:sequence>
        <xs:element name="Name" type="xs:string" minOccurs="0"/>
        <xs:element name="Description" type="xs:string" minOccurs="0"/>
        <xs:element name="RequiredParameters" minOccurs="0">
          <xs:complexType>
            <xs:sequence>
              <xs:element name="Parameter" type="xs:string" maxOccurs="unbounded"/>
            </xs:sequence>
          </xs:complexType>
        </xs:element>
        <xs:element name="AvailableParameters" minOccurs="0">
          <xs:complexType>
            <xs:sequence>
              <xs:element name="Parameter" type="xs:string" maxOccurs="unbounded"/>
            </xs:sequence>
          </xs:complexType>
        </xs:element>
        <xs:element name="DefaultResponseGroups" minOccurs="0">
          <xs:complexType>
            <xs:sequence>
              <xs:element name="ResponseGroup" type="xs:string" maxOccurs="unbounded"/>
            </xs:sequence>
          </xs:complexType>
        </xs:element>
        <xs:element name="AvailableResponseGroups" minOccurs="0">
          <xs:complexType>
            <xs:sequence>
              <xs:element name="ResponseGroup" type="xs:string" maxOccurs="unbounded"/>
            </xs:sequence>
          </xs:complexType>
        </xs:element>
      </xs:sequence>
    </xs:complexType>
  </xs:element>

  <xs:element name="ResponseGroupInformation">
    <xs:complexType>
      <xs:sequence>
        <xs:element name="Name" type="xs:string" minOccurs="0"/>
        <xs:element name="CreationDate" type="xs:string" minOccurs="0"/>
        <xs:element name="ValidOperations" minOccurs="0">
          <xs:complexType>
            <xs:sequence>
              <xs:element name="Operation" type="xs:string" maxOccurs="unbounded"/>
            </xs:sequence>
          </xs:complexType>
        </xs:element>
        <xs:element name="Elements" minOccurs="0">
          <xs:complexType>
            <xs:sequence>
              <xs:element name="Element" type="xs:string" maxOccurs="unbounded"/>
            </xs:sequence>
          </xs:complexType>
        </xs:element>
      </xs:sequence>
    </xs:complexType>
  </xs:element>

</xs:schema>
